package com.powerbank.common.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 支付记录实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("payment_record")
public class PaymentRecord {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 支付流水号
     */
    @TableField("payment_no")
    private String paymentNo;

    /**
     * 关联订单ID
     */
    @TableField("order_id")
    private Long orderId;

    /**
     * 关联订单号
     */
    @TableField("order_no")
    private String orderNo;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 支付类型：DEPOSIT-押金，FEE-费用，RECHARGE-充值
     */
    @TableField("payment_type")
    private String paymentType;

    /**
     * 支付方式：WECHAT-微信，ALIPAY-支付宝，WALLET-钱包，BANK_CARD-银行卡
     */
    @TableField("payment_method")
    private String paymentMethod;

    /**
     * 支付金额
     */
    @TableField("payment_amount")
    private BigDecimal paymentAmount;

    /**
     * 实际支付金额（扣除优惠后）
     */
    @TableField("actual_amount")
    private BigDecimal actualAmount;

    /**
     * 优惠金额
     */
    @TableField("discount_amount")
    private BigDecimal discountAmount;

    /**
     * 使用的优惠券ID
     */
    @TableField("coupon_id")
    private Long couponId;

    /**
     * 支付状态：0-待支付，1-支付成功，2-支付失败，3-已取消，4-已退款
     */
    @TableField("payment_status")
    private Integer paymentStatus;

    /**
     * 第三方支付平台交易号
     */
    @TableField("platform_transaction_id")
    private String platformTransactionId;

    /**
     * 第三方支付平台订单号
     */
    @TableField("platform_order_id")
    private String platformOrderId;

    /**
     * 支付完成时间
     */
    @TableField("payment_time")
    private LocalDateTime paymentTime;

    /**
     * 支付过期时间
     */
    @TableField("expire_time")
    private LocalDateTime expireTime;

    /**
     * 退款金额
     */
    @TableField("refund_amount")
    private BigDecimal refundAmount;

    /**
     * 退款时间
     */
    @TableField("refund_time")
    private LocalDateTime refundTime;

    /**
     * 退款原因
     */
    @TableField("refund_reason")
    private String refundReason;

    /**
     * 支付回调数据
     */
    @TableField("callback_data")
    private String callbackData;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 创建时间
     */
    @TableField(value = "created_time", fill = FieldFill.INSERT)
    private LocalDateTime createdTime;

    /**
     * 更新时间
     */
    @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedTime;

    /**
     * 是否删除：0-否，1-是
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;
}